using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Boa.HD.AccesoDatos.Entidades;
using Boa.HD.Negocios;
using Boa.HD.Negocios.Servicios;
using Didsoft.Mvc.DataModel;
using Didsoft.Mvc.Controller;

namespace Boa.HD.Web.Controllers
{
    public class HD_SolucionRapidaController : BaseController<HD_SolucionRapida>
    {
	    #region interface servicios HD_SolucionRapida

		private IHD_SolucionRapidaNegociosServicio servicio = null;

		#endregion
		
		
		#region constructor

        public HD_SolucionRapidaController()
        {
		    servicio = new HD_SolucionRapidaNegocios();
            base.SetDataModelService(servicio);            
        }

        #endregion 

		#region overrided methods
        public override void PreCreate(dynamic ViewBag)
        {
             ViewBag.HD_DefinicionProblemas=new HD_DefinicionProblemaNegocios().ObtenerTodas();

        }
        public override void PreEdit(dynamic ViewBag)
        {
             ViewBag.HD_DefinicionProblemas=new HD_DefinicionProblemaNegocios().ObtenerTodas();

        }
        #endregion

        public override ActionResult Index()
        {
            return RedirectToAction("FilterList");
        }

        public ActionResult VerAyudaRapida(string guidproblema, string GuidSolicitudAsistencia, string error)
        {
            if (!string.IsNullOrEmpty(error))
            {
                //eliminar solicitud asistencia, no estoy seguro si es el lugar correcto para realizar esta tarea
                if (!string.IsNullOrEmpty(GuidSolicitudAsistencia))
                {
                    var negociosSolicitud = new HD_SolicitudAsistenciaNegocios();
                    var entityForDelete = negociosSolicitud.GetPorGuid(GuidSolicitudAsistencia);
                    if (entityForDelete != null)
                        negociosSolicitud.Eliminar(entityForDelete);
                }
                ModelState.AddModelError("Error", error);
            }
            
            List<HD_SolucionRapida> listaSoluciones = servicio.ObtenerTodas().Where(p => p.DefinicionProblema.GuidProblema.Equals(guidproblema)).OrderBy(p=>p.NroOrden).ToList();
            ViewBag.GuidSolicitudAsistencia = GuidSolicitudAsistencia;
            ViewBag.Guidproblema = guidproblema;
            return View(listaSoluciones);
        }

         public JsonResult SolucionRapidaPorProblema(int problemaId)
        {
            try
            {
                List<HD_SolucionRapida> accesos = servicio.ObtenerTodas().Where(p => p.DefinicionProblema.Id == problemaId).ToList();
                return Json(new { Result = "OK", Records = accesos });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }

        }

    }
}

